class Student:
    def __init__(self, student_id, name, age, gender, height, weight, score, address, phone):
        self.student_id = student_id  # 学号
        self.name = name  # 姓名
        self.age = age  # 年龄
        self.gender = gender  # 性别
        self.height = height  # 身高（厘米）
        self.weight = weight  # 体重（千克）
        self.score = score  # 成绩
        self.address = address  # 家庭地址
        self.phone = phone  # 电话号码

    def study(self, hours):
        """学习行为：传入学习时间（小时）"""
        return f"{self.name}学习了{hours}小时"

    def play_game(self, game_name):
        """玩游戏：传入游戏名称"""
        return f"{self.name}正在玩{game_name}"

    def coding(self, lines):
        """编程：传入写代码的行数"""
        return f"{self.name}编写了{lines}行代码"

    def sum_numbers(self, *args):
        """数的求和：使用变长参数计算数字和"""
        return sum(args)


# 使用示例
if __name__ == "__main__":
    # 创建学生实例
    stu = Student(
        student_id="2023001",
        name="张三",
        age=20,
        gender="男",
        height=175,
        weight=68,
        score=90,
        address="北京市海淀区",
        phone="13800138000"
    )

    # 调用行为方法
    print(stu.study(3))  # 输出: 张三学习了3小时
    print(stu.play_game("王者荣耀"))  # 输出: 张三正在玩王者荣耀
    print(stu.coding(200))  # 输出: 张三编写了200行代码
    print(stu.sum_numbers(1, 2, 3, 4, 5))  # 输出: 15
class Car:
     def __init__(self,form,chelm_num,color,car_weigt,volumn):
        self.form = form
        self.chelm_num = chelm_num
        self.color = color
        self.car_weigt = car_weigt
        self.volumn = volumn
     def run(self,founction):
         print(f'这辆{self.form}的功能是{founction}')
car_in=Car(form='yssxc',chelm_num=5654,color='黄',car_weigt='4t',volumn='6kg')
# 调用行为方法
print(car_in.run('越野'))


class Laptop:
    def __init__(self, model, standby_time, color, weight, cpu, ram, disk):
        """
        初始化笔记本电脑属性
        :param model: 型号
        :param standby_time: 待机时间（小时）
        :param color: 颜色
        :param weight: 重量（kg）
        :param cpu: CPU型号
        :param ram: 内存大小（GB）
        :param disk: 硬盘大小（GB）
        """
        self.model = model
        self.standby_time = standby_time
        self.color = color
        self.weight = weight
        self.cpu = cpu
        self.ram = ram
        self.disk = disk

    def play_game(self, game_name):
        """
        打游戏行为
        :param game_name: 游戏名称
        """
        print(f"正在使用{self.model}玩{game_name}，CPU型号：{self.cpu}")

    def office_work(self):
        """办公行为"""
        print(f"正在使用{self.model}进行办公，内存大小：{self.ram}GB，硬盘大小：{self.disk}GB")


# 使用示例
my_laptop = Laptop(
    model="ThinkPad X1 Carbon",
    standby_time=15,
    color="黑色",
    weight=1.13,
    cpu="Intel i7-1260P",
    ram=16,
    disk=512
)

my_laptop.play_game("赛博朋克2077")
my_laptop.office_work()


class Monkey:
    def __init__(self, category, gender, body_color, weight):
        """
        初始化猴子属性
        :param category: 类别（如：金丝猴、猕猴等）
        :param gender: 性别
        :param body_color: 身体颜色
        :param weight: 体重（kg）
        """
        self.category = category
        self.gender = gender
        self.body_color = body_color
        self.weight = weight
        self.learned_things = []  # 存储学习过的事物

    def make_fire(self, material):
        """
        造火行为
        :param material: 造火材料（如：木棍、石头等）
        """
        print(f"{self.category}正在尝试用{material}制造火种！")

    def learn_things(self, *things):
        """
        学习事物（可学习多个事物）
        :param things: 要学习的事物（可变参数）
        """
        for thing in things:
            if thing not in self.learned_things:
                self.learned_things.append(thing)
                print(f"{self.category}学会了：{thing}")

        print(f"当前掌握技能：{', '.join(self.learned_things)}")


# 使用示例
smart_monkey = Monkey(
    category="金丝猴",
    gender="雄性",
    body_color="金色",
    weight=15.5
)

smart_monkey.make_fire("干木棍")
smart_monkey.learn_things("使用工具", "爬树")
smart_monkey.learn_things("游泳", "使用工具")  # 重复学习"使用工具"不会重复添加

#2
class Human:
    def __init__(self, name, gender, age, phone_balance, phone_brand,
                 battery_capacity, screen_size, max_standby_time, points):
        """
        初始化人类属性
        :param name: 姓名
        :param gender: 性别
        :param age: 年龄
        :param phone_balance: 手机剩余话费（元）
        :param phone_brand: 手机品牌
        :param battery_capacity: 手机电池容量（mAh）
        :param screen_size: 手机屏幕大小（英寸）
        :param max_standby_time: 手机最大待机时长（小时）
        :param points: 所拥有的积分
        """
        self.name = name
        self.gender = gender
        self.age = age
        self.phone_balance = phone_balance
        self.phone_brand = phone_brand
        self.battery_capacity = battery_capacity
        self.screen_size = screen_size
        self.max_standby_time = max_standby_time
        self.points = points

    def send_message(self, message):
        """
        发短信功能
        :param message: 短信内容
        """
        print(f"{self.name}使用{self.phone_brand}发送短信：{message}")

    def make_call(self, phone_number, call_duration):
        """
        打电话功能
        :param phone_number: 要打的电话号码
        :param call_duration: 通话时长（分钟）
        :return: 通话结果信息
        """
        # 检查电话号码是否有效
        if not phone_number or phone_number.strip() == "":
            return "拨号失败：电话号码不能为空"

        # 检查话费余额
        if self.phone_balance < 1:
            return "拨号失败：话费余额不足1元"

        # 计算通话费用和积分
        if call_duration <= 10:
            cost = call_duration * 1
            earned_points = call_duration * 15
        elif call_duration <= 20:
            cost = call_duration * 0.8
            earned_points = call_duration * 39
        else:
            cost = call_duration * 0.65
            earned_points = call_duration * 48

        # 检查余额是否足够支付通话费用
        if self.phone_balance < cost:
            return f"拨号失败：话费余额不足（需要{cost:.2f}元，当前余额{self.phone_balance:.2f}元）"

        # 执行通话
        self.phone_balance -= cost
        self.points += earned_points

        return (f"成功拨打{phone_number}，通话时长{call_duration}分钟\n"
                f"扣费{cost:.2f}元，剩余话费{self.phone_balance:.2f}元\n"
                f"获得积分{earned_points}分，总积分{self.points}分")


# 使用示例
person = Human(
    name="张三",
    gender="男",
    age=28,
    phone_balance=50.0,
    phone_brand="iPhone 13",
    battery_capacity=3200,
    screen_size=6.1,
    max_standby_time=120,
    points=200
)

# 发送短信
person.send_message("你好，今晚7点一起吃饭吗？")

# 打电话测试
print("\n测试1：拨打有效电话（5分钟）")
print(person.make_call("13800138000", 5))

print("\n测试2：拨打有效电话（15分钟）")
print(person.make_call("13900139000", 15))

print("\n测试3：拨打有效电话（25分钟）")
print(person.make_call("13700137000", 25))

print("\n测试4：拨打无效号码")
print(person.make_call("", 10))

print("\n测试5：余额不足测试")
person.phone_balance = 0.5
print(person.make_call("12786868787", 10))


